package com.baor.base.config;

import com.baor.base.domain.UserVO;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class TokenService {

    @Autowired
    private JwtConfig jwtConfig;

    public String createToken(UserVO user){
        Map<String,Object> map = new HashMap<>();
        map.put("user",user);
        return this.jwtConfig.createToken(map);
    }
    public Integer getUserId(String token){
        return getUserInfo(token).getUserId();
    }
    public UserVO getUserInfo(String token){
        Map<String,Object> res = (Map<String, Object>) getClaims(token).get("user");
        System.out.println("res:"+res);
        UserVO vo = new UserVO();
        vo.setUserId(Integer.parseInt(res.get("userId").toString()));
        vo.setUserName(res.get("userName").toString());
        vo.setUserPassword(res.get("userPassword").toString());
        System.out.println("vo:"+vo);
        return vo;
    }
    public boolean isExpired(String token){
        Claims claims = getClaims(token);
        return  claims != null;
    }

    public Claims getClaims(String token){
        return jwtConfig.parseToken(token);
    }

    public String subToken(String token){
        return token.substring(token.indexOf(".")+1,token.lastIndexOf("."));
    }
}
